package com.dss.auto_deploy.controller;

import com.dss.auto_deploy.domain.AdmNamespace;
import com.dss.auto_deploy.dto.AdmNamespaceAddDto;
import com.dss.auto_deploy.dto.AdmNamespacePageDto;
import com.dss.auto_deploy.dto.AdmNamespaceUpdateDto;
import com.dss.auto_deploy.service.IAdmNamespaceService;
import com.dss.auto_deploy.util.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;
import java.util.List;

/**
* 环境命名空间
* @Description:环境命名空间控制层
* @author dongshoushan
* @date 2022-09-27 13:47:24
*/
@RestController
@RequestMapping("/admNamespace")
@RequiredArgsConstructor(onConstructor = @_(@Autowired))
@Api(tags ="99: 环境命名空间")
public class AdmNamespaceController {

    /**
    * 环境命名空间Service
    */
    private final  IAdmNamespaceService admNamespaceService;

    /**
    * 新增环境命名空间
    * @param addDto
    * @return
    */
    @PostMapping
    @ApiOperation(value = "新增环境命名空间", notes="新增环境命名空间")
    public Result insert(@RequestBody @Valid AdmNamespaceAddDto addDto) {
        admNamespaceService.insert(addDto);
        return Result.success("新增成功");
    }

    /**
    * 修改环境命名空间
    * @param updateDto
    * @return
    */
    @PutMapping
    @ApiOperation(value = "修改环境命名空间", notes="修改环境命名空间")
    public Result update(@RequestBody @Valid AdmNamespaceUpdateDto updateDto) {
        admNamespaceService.update(updateDto);
        return Result.success("修改成功");
    }

    /**
    * 批量删除环境命名空间
    * @param ids
    * @return
    */
    @DeleteMapping("/{ids}")
    @ApiOperation(value = "删除环境命名空间", notes="删除环境命名空间")
    public Result deleteBatch(@PathVariable Long[] ids) {
        admNamespaceService.deleteBatch(ids);
        return Result.success("删除成功");
    }

    /**
    * 分页查询环境命名空间
    * @param pageDto
    * @return
    */
    @GetMapping("/page")
    @ApiOperation(value = "分页查询环境命名空间", notes="分页查询环境命名空间")
    public  Result page(AdmNamespacePageDto pageDto){
        return Result.success(admNamespaceService.list(pageDto));
    }

    /**
     * 查询环境命名空间
     * @param
     * @return
     */
    @GetMapping("/getAll")
    @ApiOperation(value = "查询环境命名空间", notes="查询环境命名空间")
    public List<AdmNamespace> getAll(String name){
        return admNamespaceService.getAll(name);
    }
}
